package yy.com.yjbotouch.util;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.LinearLayout;

public class TouchEventFather extends LinearLayout {

    public TouchEventFather(Context context) {
        super(context);
    }

    public TouchEventFather(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.e("sunzn", "TouchEventFather | dispatchTouchEvent --> " + TouchEventUtil.getTouchAction(ev.getAction()));
        return super.dispatchTouchEvent(ev);//往下分发，执行onInterceptTouchEvent方法
//        return true;//直接自己消化了，不向下分发了，但是父布局的dispatchTouchEvent一直执行，此处也是一直执行，都是dispatchTouchEvent在执行down和up操作和其他的无关。
//        return false;//不往下分发了，执行完down方法就执行执行父view里面的ontouch方法；
    }

    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.i("sunzn", "TouchEventFather | onInterceptTouchEvent --> " + TouchEventUtil.getTouchAction(ev.getAction()));
//        return super.onInterceptTouchEvent(ev);//不拦截，执行到下一个子view执行
        return true;//拦截下来，直接执行本类中的onTouchEvent方法
//          return false;//表示事件会被放行并传递到子view中执行
    }

    public boolean onTouchEvent(MotionEvent ev) {
        Log.d("sunzn", "TouchEventFather | onTouchEvent --> " + TouchEventUtil.getTouchAction(ev.getAction()));
//        return super.onTouchEvent(ev);
//        return false;//false是说明onTouchEvent不响应（只执行ACTION_DOWN方法），效果和super.onTouchEvent(ev)一样，都是让父view进行响应
        return true;//true时就是自己onTouchEvent响应（同时执行ACTION_DOWN和up方法），此时同类里面的onInterceptTouchEvent必须是true表示拦截上了。
    }

}